<!--
 * Copyright (c) 2015 Mountainstorm
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 -->
<html>

<head>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.4/css/bootstrap.min.css">
</head>

<style>
    #instructions {
        color: #0a0a0a;
        position: absolute;
        z-index: 100;
        bottom: 0px;
        left: 0px;
    }

    /* this element needs tooltip positioning to work */
    .graphviz-svg {
        position: relative;
    }

    /* stop people selecting text on nodes */
    .graphviz-svg text {
        -webkit-touch-callout: none;
        -webkit-user-select: none;
        -khtml-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
        cursor: default;
    }
</style>

<body>
    <h4 id="instructions">Click node to highlight; Shift-scroll to zoom; Esc to unhighlight</h4>

    <div id="details", style="float: left; width: 20%; height: 100%; background-color:lightgray; font-color: black; overflow: scroll; padding: 1em;">
        <h5>Details</h5>
        <p>(Click on a node for details)</p>
    </div>

    <div id="graph" style="float: right; width: 80%; height: 100%; overflow: scroll;"></div>

    <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
    <script type="text/javascript"
        src="https://cdn.rawgit.com/jquery/jquery-mousewheel/master/jquery.mousewheel.min.js"></script>
    <script type="text/javascript" src="https://cdn.rawgit.com/jquery/jquery-color/master/jquery.color.js"></script>
    <script type="text/javascript"
        src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.4/js/bootstrap.min.js"></script>
    <script type="text/javascript" src="jquery.graphviz.svg.js"></script>
    <script type="text/javascript">
        var svg = {{ svg }}
    </script>
    <script type="text/javascript">
        $(document).ready(function () {
            $("#graph").graphviz({
                svg: svg,
                ready: function () {
                    var gv = this
                    gv.nodes().click(function () {
                        var $set = $()
                        $set.push(this)
                        $set = $set.add(gv.linkedFrom(this, true))
                        $set = $set.add(gv.linkedTo(this, true))
                        gv.highlight($set, false)
                        gv.tooltip($(this), true)
                        gv.bringToFront($set)

                        // copy tooltip text to pane
                        var tooltip_id = $(this).find("a").attr("aria-describedby")
                        var tooltip_box = $("#"+tooltip_id).find(".tooltip-inner")
                        var tooltip_data = tooltip_box.html()
                        $("#details p").html(tooltip_data)
                        gv.tooltip($(this), false)
                        $(this).css('font-weight', 'bold')
                    })
                    $(document).keydown(function (evt) {
                        if (evt.keyCode == 27) {
                            gv.highlight()
                        }
                    })
                }
            });
        });
    </script>


</body>

</html>
